package com.xygz.orm;

import com.xygz.orm.exception.ORMException;
import com.xygz.orm.table.ZTable;

/**
 * the description for class EntityManager
 *
 * @author xiyuan-lgz 2023-12-02 @version v1.0.0 新建与整理
 */
public interface EntityManager {
    
    /**
     * 获取实体类管理对象
     *
     * @return 实体类管理对象
     */
    public static EntityManager instance() {
        return ORMManager.instance().getEntityManager();
    }
    
    /**
     * 解析 实体类成对应表
     *
     * @param clz 类对象
     * @param <E> 实体类
     * @return 表格对象
     * @throws ORMException 表格对象
     */
    public <E> ZTable resolveTable(Class<E> clz) throws ORMException;
    
    /**
     * 重置实体表信息
     * <p>
     * 使得 实体类重新解析
     *
     * @param clz 实体类
     */
    public void reset(Class<?> clz);
    
    /**
     * 重置所有实体表信息
     * <p>
     * 使得 实体类重新解析
     *
     */
    public void reset();
}
